home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 5.4 KB | 143 lines |
- 1000 SCREEN 2 : CLS : KEY OFF : DIM DATAIO$(999)
- 1010 '*********************************************************
- 1020 '** COMMUNICATIONS TRANSFER PROGRAM - RECEIVE **
- 1030 '** OCT 3,1982 VERSION 1.1 **
- 1040 '*********************************************************
- 1050 '** REQUIRES THE SMART MODEM SWITCHES TO BE SET **
- 1060 '** AS : **
- 1070 '** 1 = UP COMPUTER SUPPORT OF DTR LEAD **
- 1080 '** 2 = DOWN NON-VERBOSE RESULT CODES **
- 1090 '** 3 = DOWN RESULT CODES SENT TO SCREEN **
- 1100 '** 4 = DOWN NO ECHO OF CHARACTERS **
- 1110 '** 5 = DOWN NO AUTO ANSWER OF PHONE **
- 1120 '** 6 = DOWN COMPUTER FORCED TO ACCEPT DATA **
- 1130 '** 7 = UP SINGLE LINE PHONE **
- 1140 '*********************************************************
- 1150 '
- 1160 '*********************************************************
- 1170 '** transmit file name entry section **
- 1180 '*********************************************************
- 1190 ON ERROR GOTO 1300
- 1200 CLS
- 1210 PRINT "ENTER COMPLETE FILENAME INCLUDING EXTENSION OF THE FILE TO BE "
- 1220 PRINT "TRANSMITTED - NOTE : FILE MUST BE IN ASCII FORMAT FOR PROGRAM "
- 1230 PRINT "TO WORK. "
- 1240 PRINT
- 1250 INPUT "FILENAME = " ; TRANSMIT$
- 1260 OPEN TRANSMIT$ FOR INPUT AS #1
- 1270 GOTO 1400
- 1280 '
- 1290 '*********************************************************
- 1300 '** error handling routine for name entry section **
- 1310 '*********************************************************
- 1320 FOR X = 1 TO 1000 : NEXT : CLS : FOR X = 1 TO 1000 : NEXT
- 1330 IF ERR = 53 THEN PRINT "FILE NOT FOUND "
- 1340 IF ERR = 64 THEN PRINT "BAD FILE NAME "
- 1350 IF (ERR <> 53) AND (ERR <> 64) THEN PRINT "ERROR IN FILE NAME INPUT "
- 1360 LOCATE 5,1
- 1370 RESUME 1210
- 1380 '
- 1390 '*********************************************************
- 1400 '** receive file name entry section **
- 1410 '*********************************************************
- 1420 ON ERROR GOTO 1520
- 1430 CLS
- 1440 PRINT "ENTER COMPLETE FILENAME INCLUDING EXTENSION WHERE THE FILE TO BE "
- 1450 PRINT "RECEIVED WILL BE STORED."
- 1460 PRINT
- 1470 INPUT "FILENAME = " ; RECIEVE$
- 1480 OPEN RECIEVE$ FOR OUTPUT AS #2
- 1490 GOTO 1620
- 1500 '
- 1510 '*********************************************************
- 1520 '** error handling routine for name input section **
- 1530 '*********************************************************
- 1540 FOR X = 1 TO 1000 : NEXT : CLS : FOR X = 1 TO 1000 : NEXT
- 1550 IF ERR = 53 THEN PRINT "FILE NOT FOUND "
- 1560 IF ERR = 64 THEN PRINT "BAD FILE NAME "
- 1570 IF (ERR <> 53) AND (ERR <> 64) THEN PRINT "ERROR IN FILE NAME INPUT "
- 1580 LOCATE 5,1
- 1590 RESUME 1440
- 1600 '
- 1610 '*********************************************************
- 1620 '** routine to initiate communications **
- 1630 '*********************************************************
- 1640 ON ERROR GOTO 0
- 1650 OPEN "com1:" AS #3
- 1660 IF (INP(&H3FD) AND &H20) = 0 THEN 1660 'TRANS HOLD REGISTER EMPTY?
- 1670 PRINT #3, "AT Z"
- 1680 GOSUB 1780
- 1690 SEC = 3 : GOSUB 1870
- 1700 PRINT #3, "AT S0 = 1"
- 1710 GOSUB 1780
- 1720 SEC = 3 : GOSUB 1870
- 1730 GOSUB 1780
- 1740 GOTO 1730 ' IF ANY NON-CONNECT SIGNAL THEN LOOP (DO NOT CONTINUE)
- 1750 END ' IF HERE THEN ERROR - CLOSE AND STOP
- 1760 '
- 1770 '*********************************************************
- 1780 '** routine to input a line from modem **
- 1790 '*********************************************************
- 1800 LINE INPUT #3, RECEIVEDATA$
- 1810 PRINT
- 1820 IF RECEIVEDATA$ = "0" THEN PRINT "RESPONSE = OK" : RETURN
- 1830 IF RECEIVEDATA$ = "1" THEN PRINT "RESPONSE = CONNECT" : RETURN 1950
- 1840 IF RECEIVEDATA$ = "2" THEN PRINT "RESPONSE = RING" : RETURN
- 1850 IF RECEIVEDATA$ = "3" THEN PRINT "RESPONSE = NO CARRIER" : END
- 1860 IF RECEIVEDATA$ = "4" THEN PRINT "RESPONSE = ERROR" : END
- 1870 '
- 1880 '*********************************************************
- 1890 '** time delay for SEC seconds **
- 1900 '*********************************************************
- 1910 FOR DELAY = 1 TO 700*SEC : NEXT DELAY
- 1920 RETURN
- 1930 '
- 1940 '*********************************************************
- 1950 '** routine to receive data and store it **
- 1960 '*********************************************************
- 1970 ON COM(1) GOSUB 2100
- 1980 COM(1) ON
- 1990 IF VAL(RECEIVEDATA$) < 64000 THEN 1990
- 2000 '
- 2010 FOR I = 1 TO POINTER
- 2020 PRINT #2 , DATAIO$(I)
- 2030 NEXT I
- 2040 '
- 2050 CLOSE #2
- 2060 PRINT : PRINT "FILE - ";RECEIVE$;" RECEIVED AND STORED"
- 2070 GOTO 2200
- 2080 '
- 2090 '*********************************************************
- 2100 '** store each line in array DATAIO$ via interrupt **
- 2110 '*********************************************************
- 2120 LINE INPUT #3, RECEIVEDATA$
- 2130 POINTER = POINTER + 1
- 2140 DATAIO$(POINTER) = RECEIVEDATA$
- 2150 IF (RECEIVEDATA$ = "3") THEN PRINT : PRINT "LOSS OF CARRIER" : END
- 2160 IF VAL(RECEIVEDATA$) > 64000 THEN COM(1) OFF
- 2170 RETURN
- 2180 '
- 2190 '*********************************************************
- 2200 '** routine to transmit data to distant end **
- 2210 '*********************************************************
- 2220 COM(1) OFF
- 2230 ON ERROR GOTO 2330 ' TERMINATE
- 2240 SEC = 3 : GOSUB 1890
- 2250 WHILE NOT EOF(1)
- 2260 LINE INPUT #1 , SENDDATA$
- 2270 PRINT #3, SENDDATA$
- 2280 WEND
- 2290 PRINT #3, "65000 '"
- 2300 PRINT : PRINT "FILE - ";TRANSMIT$;" TRANSMITTED OK"
- 2310 '
- 2320 '*********************************************************
- 2330 '** TERMINATE PROGRAM **
- 2340 '*********************************************************
- 2350 SEC = 20 : GOSUB 1890
- 2360 PRINT #3,"+++";
- 2370 SEC = 1 : GOSUB 1890
- 2380 PRINT #3,"AT Z"
- 2390 END
- 2400 RETURN
- 65000 '
-